<?php
/**
 * Descripción de "archivos.php":
 * Objeto que carga de la base de datos la dirección física de algún archivo.
 *
 * @author peregrina
 */

class archivos extends comun{
    
    function __construct($from, $tipo, $id) {
        parent::__construct($from, $tipo, $id);
    }
    function descargar(){
        //Hacemos el query
        $res = $this->bdd->query("select * from Archivos where aid = '$this->id';");
        $discoduro = $res["Archivo"];
        $nombre = $res["Nombre"];
        //cambiamos los headers para que parezca el archivo original.
        header("Content-Type:  application/octet-stream");
        header("Content-Disposition:  attachment; filename=\"$nombre\";" );
        header("Content-Transfer-Encoding:  binary");
        readfile($_SERVER["DOCUMENT_ROOT"]."/archivos/".$discoduro);
        exit;
    }
    
    function id_definido(){
        //Hacemos el query MBDD_JOIN
        $res = $this->bdd->query("select a.*, u.Nombre 'Nombreautor' from Archivos a join Usuarios u on a.Autor=u.UID where a.AID='$this->id';");
        
        if(!isset($res)){
            //ID no encontrado
            $GLOBALS["HTTP_Status"] = "404";
            $this->HTML["titulo"] = "Archivo no encontrado";
            $this->HTML["cuerpo"] .= "<h1>". $this->HTML["titulo"] ."</h1>\n<p>El archivo no existe.</p>";
        }
        
        else{
                //No vamos a descargar
                if(!isset($_GET["descargar"])){
                    //ID encontrado
                    $this->HTML["titulo"] = "Archivo: ". $res["Nombre"];
                    //Si eres el autor
                    $editar = "";
                    if ($GLOBALS["aut"]>1){
                        $editar .= "<input type='button' onclick=\"post('?aid=crear',{editar:'{$res["AID"]}'})\" value='Editar' />";
                    }
                    $fecha = strftime("%A, %e de %B de %Y", strtotime($res["FechaHora_subido"]));
                    $this->HTML["cuerpo"] = <<<FIN
                    <h1><a href='?aid'>Archivos:</a> {$res["Nombre"]}</h1><info>Subido por {$res["Nombreautor"]} el $fecha  (Última modificación: {$res["FechaHora_edicion"]})</info><br /><br />
                    Descripción:<br />{$res["Descripcion"]}<br /><br />
                    $editar<input type="button" onclick="window.location='?aid={$res["AID"]}&descargar'" value="Descargar archivo" />
FIN;
                }
                //Vamos a descargar
                else{
                    $this->descargar();
                }
                

            }
    }
    
    function id_no_definido(){
        //Buscamos el índice o el último ID
        if(!empty($_GET["i"])){
            $i = $_GET["i"];
        }
        else{
            //Obtenemos el último set
            $res = $this->bdd->multiquery("select * from (select AID from Archivos order by AID desc limit {$GLOBALS["iph"]}) Archivos order by AID;");
            $i = (isset($res[0]["AID"]))?$res[0]["AID"]:0;
        }
        //hacemos el query
        $res = $this->bdd->multiquery("select * from (select AID, Nombre from Archivos where AID>='$i' order by AID limit {$GLOBALS["iph"]}) Archivos order by AID desc;");
        //Creamos la lista
        if(!empty($res)){
            $lista = "<ul>";
            foreach($res as $archivo){
                $lista .= "<li><a href=\"?aid=".$archivo["AID"]."\">".$archivo["Nombre"]."</a></li>\n\t\t";
            }
            $lista .= "</ul>";
            $aid_u = $res[0]["AID"];
            $siga = $this->sig_ant(true, "a", $this->from, $aid_u);
            $anta = $this->sig_ant(false, "a", $this->from, $i);
        }
        else{
            $lista = "No se han subido archivos.";
            $siga = $anta = "";
        }
        
        
        //Construimos el HTML
        $this->HTML["titulo"] = "Archivos";
        $this->HTML["cuerpo"] .= <<<FIN
                <h1>{$this->HTML["titulo"]}</h1>
                    <p>
                    $lista
                    </p>
                    $anta $siga <br/><br/>
FIN;
        //Si el usuario está iniciado
        if($GLOBALS["aut"]>0){
            $this->HTML["cuerpo"] .= "<input type='button' value='Subir archivo' onclick=\"window.location='?aid=crear'\"> ";
        }
    }
    
    function crear(){
        //Forma para subir archivo
        $this->HTML["titulo"] = "Subir archivo";
        $this->HTML["cuerpo"] .= <<<FIN
   <h1>{$this->HTML["titulo"]}</h1>
        <form action="?aid=crear" method="post" enctype="multipart/form-data">
            Archivo: <input type="file" name="archivo" /><br />
            Descripción: <textarea name="descripcion" id="editor"></textarea><br />
            <input type="hidden" name="guardando" value="Subir" />
        </form>
   
            <input type="button" value="Subir" onclick="validar_tamano(10,document.forms[0].archivo);" />
FIN;
                }
    
    //Editar página
    function editar(){
        //Variables
        $id = $this->bdd->mysqli->real_escape_string($_POST["editar"]);
        //Obtener información
        $res = $this->bdd->query("select * from Archivos where AID = '$id';");
        
        $this->HTML["titulo"] = "Editando archivo: {$res["Nombre"]}";
        $this->HTML["cuerpo"] .= <<<FIN
   <h1>{$this->HTML["titulo"]}</h1>
        <form method="POST" action="?aid=crear" class="edicion">
        <textarea name="descripcion" id="editor">{$res["Descripcion"]}</textarea><br />
        <input type="hidden" name="editar" value="{$res["AID"]}"/>
        <input type="submit" name="guardando" value="Guardar">
        <input type="submit" name="guardando" value="Borrar">
        </form>
FIN;
    }
    
    function guardar(){
        //Variables
        $descripcion = $this->bdd->mysqli->real_escape_string($_POST["descripcion"]);
        $autor = $this->bdd->mysqli->real_escape_string($_COOKIE["Autor"]);
        $id = $this->bdd->mysqli->real_escape_string((empty($_POST['editar'])) ? '' : $_POST['editar']);
        
        
        //Subir nuevo archivo
        if(empty($_POST["editar"])){
            //Variables
            $nombre = $_FILES["archivo"]["name"];
            $archivo = $_FILES["archivo"]["tmp_name"];
            $final=hash("crc32",$archivo);
            move_uploaded_file($archivo,$_SERVER["DOCUMENT_ROOT"]."/archivos/".$final);

            $this->bdd->insert("insert into Archivos values (NULL, Buscar_UID('$autor'), '$nombre', '$descripcion', '$final', NULL, NULL);");
			
            //Obtener el número de ID
            $res = $this->bdd->query("select AID from Archivos where Autor=Buscar_UID('$autor') order by AID desc limit 1;");
            $id = $res["AID"];
        }
        //Editar archivo
        else{
            //Cambiar descripcion
            if($_POST["guardando"]=="Guardar"){
                //Inserción
                $this->bdd->insert("update Archivos set Descripcion='$descripcion' where AID='$id';");
            }
            //Borrar del sistema
            else{
                //Hacemos el query
                $res = $this->bdd->query("select * from Archivos where aid = '$id';");
                //Borramos del disco duro
                unlink("archivos/".$res["Archivo"]);
                //Borramos de la base de datos
                $this->bdd->insert("delete from Archivos where AID='$id';");
                //Quitamos ID para ir a la pagina principal
                $id="";
            }
            
        }
        
        //Retornar a la página
        $this->redirect("aid=$id");
        
    }
}

?>
